package junior.db.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author wubo
 * @date 2024/9/14 18:07
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface PersistentValue {
    /**
     * 持久化值的类型
     * @return
     */
    Class<?> type();
    /**
     * 根据目标类型值转换为持久化的值的实例方法，实例方法的返回类型为type属性值
     * @return
     */
    String toMethod();
    
    /**
     * 根据持久化的值转为目标类型值的静态方法，必须有且只有一个参数，参数类型为type属性值，返回类型为目标类型
     * @return
     */
    String fromMethod();
    
}
